# Author: Mr.Xu
# @Time : 2019/12/4 21:10

from rest_framework.filters import BaseFilterBackend
# 自定义过滤器类
class LimitFilter(BaseFilterBackend):
    # 必须实现filter_queryset方法，返回queryset对象
    def filter_queryset(self, request, queryset, view):
        # 取出过滤条件
        limit = request.query_params.get("limit")   # 过滤参数
        try:
            return queryset[:int(limit)]
        except:
            return queryset



# 基于django-filter插件，完成指定区间筛选（一般都是对应数字字段）
from django_filters.rest_framework.filterset import FilterSet
from django_filters import filters
from . import models
class CourseFilterSet(FilterSet):
    # field_name：要过滤的数据库字段，lookup_expr：过滤条件
    min_price = filters.NumberFilter(field_name='price', lookup_expr='gte') # 条件：大于price
    max_price = filters.NumberFilter(field_name='price', lookup_expr='lte') # 条件：小于price
    class Meta:
        model = models.Course
        # 参与分类筛选的字段：
        fields = ['course_category', 'max_price', 'min_price']
